\documentclass[a4paper, 12pt, twoside]{book}

\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{a4}

\usepackage{url}

\usepackage[pdftex]{color, graphicx}
\usepackage[pdftex, linkcolor=black, colorlinks, citecolor=black,
  pdftitle = {Manuel de l'utilisateur}, pdfauthor =
  {Johan\ ``Solo''\ Luisier}]{hyperref}

\usepackage{fancyhdr}
\pagestyle{fancy}

\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\fancyhf{}
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[LO]{\bfseries\rightmark}
\fancyhead[RE]{\bfseries\leftmark}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyfoot[LE,RO]{Johan Luisier}
\fancyfoot[LO,RE]{Version 1.0}
\fancypagestyle{plain}{%
   \fancyhead{} % get rid of headers on plain pages
   \renewcommand{\headrulewidth}{0pt} % and the line
}

\makeatletter
\def\thickhrulefill{\leavevmode \leaders \hrule height 1ex \hfill \kern \z@}
\def\@makechapterhead#1{%
  \reset@font
  \vspace*{10\p@}%
	  {\parindent \z@ 
	    \begin{flushleft}
	      \reset@font \scshape \bfseries \Huge \thechapter \par
	    \end{flushleft}
	    \begin{flushleft}
	      \reset@font \LARGE \strut #1\strut \par
	    \end{flushleft}
	    \hrule
	    \vskip 40\p@
}}
\def\@makeschapterhead#1{%
  \reset@font
  \vspace*{10\p@}%
	  {\parindent \z@ 
	    \begin{flushleft}
	      \reset@font \scshape \bfseries \Huge \vphantom{\thechapter} \par
	    \end{flushleft}
	    \begin{flushleft}
	      \reset@font \LARGE \strut #1\strut \par
	    \end{flushleft}
	    \hrule
	    \vskip 40\p@
}}

\title{Projet ADD\\
  \small Guide de l'utilisateur}
\author{Johan ``Solo'' Luisier}

\newcommand{\fig}[1]{\textsc{Fig.}~\ref{#1}}

\begin{document}

\maketitle

\tableofcontents

\chapter{Introduction}

Pourquoi un manuel de l'utilisateur en pdf~? Tout simplement car j'ai
pu remarquer à plusieurs reprises que l'utilisateur moyen ne lit pas
toujours le
\href{http://vincent.wrackweb.info/jdrwiki/index.php?title=Soft_-_Feuilles_de_perso}{wiki}. De
plus, le présent manuel contient quelques illustrations, ce qui permet
d'être plus complet et plus clair.

\vspace{.5cm} Nous parlerons des différents programmes, comment les
utiliser (et quand), mais tout d'abord un (très) bref commentaire~:
pour le moment, tous les programmes sont dépourvu d'une interface
graphique, c'est à dire qu'il faut les utiliser en mode \emph{console}
(voir \fig{console}).

\begin{center}
\begin{figure}[hb!]
\includegraphics[width=14cm]{console.jpg}
\caption{Une console sous Linux\label{console}}
\end{figure}
\end{center}

Maintenant, nous allons suivre pas à pas la création d'un personnage
fictif, appelons-le Bob l'Eponge, qui sera un clerc-mage
demi-elfe. Admettons également que les trait de notre futur personnage
sont~:
\begin{center}
\begin{tabular}{ll}
 Force & 12 \\
 Dextérité & 15 \\
 Constitution & 13 \\
 Intelligence & 16 \\
 Sagesse & 17 \\
 Charisme & 14
\end{tabular}
\end{center}

\chapter{Installer le programme}

\section{Installation}

Premièrement, il faut installer les programmes. Téléchargeons pour
commencer Soft\_v1r1.tar.gz, puis mettons-le dans le dossier ADD créé à
cet effet. Décompressons ensuite l'archive en lançant la commande~:
\begin{verbatim} tar -xzf Soft\_v1r1.tar.gz \end{verbatim}

Ensuite, lançons l'installation proprement dite avec la commande~:
\begin{verbatim} csh install \end{verbatim}

Le terminal doit alors ressembler à la \fig{instal}
(Notons la dernière ligne, \emph{Programmes compilés}).

\begin{center}
\begin{figure}[ht!]
\includegraphics[width=12cm]{instal}
\caption{Installation terminée\label{instal}}
\end{figure}
\end{center}


\section{Mise à jour}

Premièrement, téléchargeons le fichier Update.tar.gz, et mettons le
dans notre dossier ADD. Décompressons l'archive avec la commande
suivante~:
\begin{verbatim} tar -xzf Update.tar.gz \end{verbatim}

Vérifions que nous avons bien la bonne version du programme ainsi que
du script de mise à jour, en lançant~:
\begin{verbatim} ./Update.py -V \end{verbatim}
Qui doit normalement nous afficher~:
\begin{verbatim}ADD Updater, version 1.4
Software version :  v1r1
 \end{verbatim}
Créons le dossier patch dans notre dossier ADD, et téléchargeons-y le
fichier Patch\_v2r2.tar.gz, que nous décompressons de la même manière
qu'avant~:
\begin{verbatim} tar -xzf Patch_v2r2.tar.gz \end{verbatim}
Lançons ensuite l'utilitaire de mise à jour~:
\begin{verbatim} ./Update.py \end{verbatim}

\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{update}
\caption{Mise à jour terminée\label{update}}
\end{figure}
\end{center}

Nous pouvons également lire dans le fichier \textbf{changelog.txt} le compte-rendu de la mise à jour~:
\begin{verbatim}Mise à jour vers la version  v1r2
Mise à jour de src/lib.h
Mise à jour de src/Spec.h
Mise à jour de src/Mage.h
Mise à jour de src/lib.cc
Mise à jour de src/Spec.cc
Mise à jour de src/Mage.cc
Mise à jour terminée avec succès
\end{verbatim}


Maintenant, nous sommes prêts à poursuivre.

\chapter{Création du personnage}
\label{chap::creation}

\section{La race}

Le programme servant à créer un personnage est tout naturellement
\mbox{NouveauJoueur}. Lançons donc~:
\begin{verbatim} ./NouveauJoueur \end{verbatim}
qui produit la sortie suivante (en plus d'un joli en-tête)~:
\begin{verbatim}
Utilisation ./NouveauJoueur Nom code_race code_classe
code_race :
  1 =>      Humain
  2 =>        Nain
  3 =>        Elfe
  4 =>       Gnome
  5 =>      Hobbit
  6 =>   Demi-Elfe
  7 =>  Demi-orque
  8 =>   Demi-Ogre
code_classe :
  1 =>    Guerrier
  2 =>     Paladin
  3 =>      Rôdeur
  4 =>      Voleur
  5 =>       Barde
  6 =>      Prêtre
  7 =>      Druide
  8 =>    Magicien
  9 => Spécialiste
\end{verbatim}

Notre personnage est Bob l'Eponge, clerc/mage demi-elfe, relançons
 donc le programme, avec tous les arguments nécessaires~:
\begin{verbatim} ./NouveauJoueur Bob l\'Eponge 6 6 8 \end{verbatim}
Notons la présence du backslash ($\backslash$) devant l'apostrophe.

Entrons les traits de notre personnage, comme sur la \fig{traits}.
\begin{center}
\begin{figure}[ht!]
\includegraphics[width=12cm]{traits}
\caption{Entrée des traits\label{traits}}
\end{figure}
\end{center}
Maintenant, nous allons créer la race du personnage. Bob est doué
d'Infravision, il est Résistant aux charmes et sommeil et possède un
Talent pour les épées. La sélections de ces capacités se fait comme
indiqué sur la \fig{race}. Notons que le programme demande une
confirmation du choix de capacités effectué.

Pour terminer le choix, il faut entrer la compétence \emph{Aucune}.
\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{race}
\caption{Capacités raciales choisies\label{race}}
\end{figure}
\end{center}

\section{La classe (ou les classes)}

Passons maintenant à la création des classes de Bob. Comme c'est un
clerc/mage, la première classe à entrer est naturellement la classe
Clerc.

La première étape consiste à entrer les désavantages. Bob a en fait un
petit problème~: il est obligé de passer une heure tous les matins à
prier afin de pouvoir récupérer ses sort. Il a donc le désavantage
\emph{Tabou}, comme on peut le voir sur la \fig{restrictions}.
\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{restrictions}
\caption{Choix des restrictions\label{restrictions}}
\end{figure}
\end{center}
\clearpage

Ensuite on passe au choix des compétences de classe, qui s'opère de la
même manière (\fig{clerc}).
\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{clerc}
\caption{Choix des compétences\label{clerc}}
\end{figure}
\end{center}
Ensuite, nous répétons l'opération pour la classe mage.

\section{Finalisation}
\label{sec::creation}

Vient ensuite le moment d'entrer les points de vie du personnage, Bob
en a 7. La prochaine étape est d'entrer les éventuels désavantages de
Bob, qui a le \emph{Sommeil lourd} (\fig{desavantages}).
\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{desavantages}
\caption{Choix des désavantages\label{desavantages}}
\end{figure}
\end{center}
Par contre il possède une \emph{Mémoire édéitique}. Il a les
compétences suivantes~:
\begin{itemize}
\item [-] Allumage de feu
\item [-] Langues modernes
\item [-] Herboristerie
\item [-] Lecture-écriture
\end{itemize}
dont les valeurs sont automatiquement ajustées par les traits
concernés (\fig{competences}).
\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{competences}
\caption{Choix des competences\label{competences}}
\end{figure}
\end{center}
Il ne désire pas augmenter ses scores de compétences pour le moment.

Nous souhaitons alors sauver ce personnage dans le fichier Bob.xml
(\fig{fin_creation}).
\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{fin_creation}
\caption{Finalisation de la création\label{fin_creation}}
\end{figure}
\end{center}

\chapter{Ajouter des sorts}

Maintenant il nous faut ajoutter aux livre de sorts de Bob ceux qu'il
connait déjà. Le programme est AjouterSorts, que l'on lance comme ça~:
\begin{verbatim} ./AjouterSorts \end{verbatim}
On entre alors dans la sélection des sorts possibles (c'est à dire que
le programme tient compte du niveau du personnage ainsi que des
écoles auquelles il a accès, de manière automatique), après avoir
entré le nom du fichier créé à la section \ref{sec::creation} (voir
\fig{sort}).

Bob connait les sorts de \emph{Mains brûlantes}, \emph{Glisse} et
\emph{Sommeil}. A la fin de la procédure, il faut à nouveau entrer un
nom de fichier pour sauvegarder les nouvelles données. Nous faisons
alors le choix de sauver les informations dans un nouveau
fichier~:Bob+.xml, comme on peut le voir sur la \fig{sauve}.
\begin{center}
\begin{figure}[ht!]
\includegraphics[width=12cm]{sort}
\caption{Choix des sorts\label{sort}}
\end{figure}
\end{center}
\begin{center}
\begin{figure}[hb!]
\includegraphics[width=12cm]{sauve}
\caption{Choix des sorts terminé\label{sauve}}
\end{figure}
\end{center}

\chapter{Impression de la feuille de personnage}

Vient le moment où nous allons jouer, et nous avons donc besoin de
notre feuille de personnage. Pour ce faire il faut utiliser le
programme EcrireJoueur, mais tout d'abord occupons-nous de paramétrer
la sortie.

Pour ce faire lançons la commande~:
\begin{verbatim} ./OUTPUT.py \end{verbatim}
Notre choix se porte sur le format pdf, et notre programme de lecture
est kpdf, comme on le voit sur la \fig{sortie}.
\begin{center}
\begin{figure}[ht!]
\includegraphics[width=12cm]{sortie}
\caption{Paramétrage de la sortie\label{sortie}}
\end{figure}
\end{center}
Maintenant nous sommes parés pour créer notre feuille de perso. Nous
lançons donc~:
\begin{verbatim} ./EcrireJoueur \end{verbatim}

Ce qui nous donne le résultat que l'on voit sur la \fig{ecrit}.
\begin{center}
\begin{figure}[ht!]
\includegraphics[width=14cm]{ecrit}
\caption{Feuille de personnage créée\label{ecrit}}
\end{figure}
\end{center}

\chapter{Evolution du personnage}

Après quelques soirées passées autour d'une table, Bob a gagné un
certain nombre de points d'expériences, mettons 3000. Il est temps de
mettre à jour sa feuille de personnage.

Nous lançons donc la commande~:
\begin{verbatim} ./EvolutionJoueur \end{verbatim}
Nous entrons donc 3000~xp gagnés. Le programme détecte que Bob
l'Eponge a gagné un niveau, et demande combien de points de vie a-t'il
gagné (3). Le nombre de pp est, admettons, de 4 (\fig{xp}).
\begin{center}
\begin{figure}[ht!]
\includegraphics[width=12cm]{xp}
\caption{Gain d'expérience\label{xp}}
\end{figure}
\end{center}
Ensuite, nous pouvons entrer de nouvelles compétences, Bob a appris
l'\emph{Utilisation de cordes}. Puis nous pouvons améliorer les
compétences de Bob (\fig{comp}).
\begin{center}
\begin{figure}[ht!]
\includegraphics[width=12cm]{comp}
\caption{Amélioration des compétences\label{comp}}
\end{figure}
\end{center}
Finalement, il faut sauver le fichier nouvellement créé. Nous
choisissons ici de créer un fichier Bob\_lvl2.xml.

\vspace{.5cm}
Voilà qui termine la discussion sur les opérations ``basiques''~: tout
ce dont vous pouvez avoir besoin pour créer un personnage puis le
faire évoluer a été présentés dans les chapitres précédents.

\chapter{Outils}

Il existe en plus un certain nombres d'outils - ou autres astuces,
et fonctionnalités - dont nous allons faire brièvement le tour ici.

\section{Niveaux de sortie}

Pour des raisons de développement, les différents programmes peuvent
produire une imposante masse d'information qui s'affiche dans votre
terminal. Par le biais du fichier \textbf{CONFIG}, vous pouvez décider
d'afficher ces informations (juste pour voir ou pour tenter de
comprendre un bug).

Les différents niveaux utilisé sont indiqués dans l'en-tête du
fichier. Ensuite, il existe plusieurs variables dont la valeur peut
être changée~:
\begin{center}
\begin{tabular}{ll}
\large{Nom} & \large{Concerne} \\
Debug::itsLevel & gestions des sorts et lettres accentuées \\
Joueur::interne & gestion de la création d'un joueur \\
Joueur::fonction\_elementaire\_xml & sauvegarde de votre personnage \\
Joueur::fonction\_recuperation\_xml & le chargement de votre personnage \\
Joueur::fonction\_tex & création de la feuille de personnage \\
Race::elementaire & peu utilisé pour l'instant \\
Race::fonction & peu utilisé pour l'instant \\
Classe::elementaire & gestion de accents et lecture des sorts \\
Classe::fonction & ajout de sorts\\
\end{tabular}
\end{center}

\section{Vérification rapide du contenu d'un fichier}

Lorsque vous aurez créé plusieurs personnages, il deviendra peut-être
difficile de s'y retrouver\ldots C'est là que le programme
\mbox{ApercuJoueur} s'avère utile~: il permet d'afficher un court
résumé du personnage contenu dans un fichier. Il suffit simplement de
lancer le programme~:
\begin{verbatim} ./ApercuJoueur \end{verbatim}
et d'entrer le nom du fichier (sans extension, comme d'habitude) que
vous voulez ``scanner''.
\begin{center}
\begin{figure}[ht!]
\includegraphics[width=12cm]{apercu}
\caption{Utilisation d'ApercuJoueur\label{apercu}}
\end{figure}
\end{center}

\listoffigures

\end{document}
